package ar.com.hakasoft.entities

import ar.com.hakasoft.utils.DateUtil

class Factura {

	BigDecimal precioTotal
	BigDecimal precioParcial = 0
	Date fecha
	Date fechaPagada
		
	Dietetica dietetica
	Cliente cliente
	Vendedor vendedor
	List itemFactura
	// TODO: Implementar fueFinalizada
	boolean fueFinalizada
	boolean fueEliminada
	boolean fueCobrada
	String username
	
	static hasMany = [ itemFactura: ItemFactura ]
	
    static constraints = {
		dietetica(nullable: true)
		vendedor (nullable: true)
		cliente (nullable: true)
		precioTotal (nullable:true)
		username(nullable: true)
		fecha(nullable: true)
		fechaPagada(nullable: true)
    }

	def cobrar(boolean cobra){
		if (cobra){
			fechaPagada = new Date() // Lo pidio Gery
		}
		this.fueCobrada = cobra
		this.precioParcial = 0
	}
	
//	public BigDecimal getPrecioTotal(){
//		println "entro a precio total"
//		println "fueCobrada: ${fueCobrada} -- fechaPagada: ${fechaPagada}"
//		println "result: ${fueCobrada && fechaPagada != null}"
//		if (fueCobrada && fechaPagada != null){
//			println "devuelve: " + this.precioTotal
//		}
//		println "devuelve: 0"
//		return this.precioTotal
//	}
	
	def getPrecioCalculado(){
		def result = 0
		if (fueCobrada && fechaPagada != null){
			result = this.precioTotal
		}
		return result
	}
	
	public BigDecimal getPrecioParcial(){
		if (this.precioParcial > 0){
			this.precioParcial = this.precioTotal.subtract(this.precioParcial)
		}
		return this.precioParcial
	}
	
	public sumarPrecioParcial(BigDecimal nuevoParcial){
		this.precioParcial = this.precioParcial.add(nuevoParcial)
		if (this.precioParcial.equals(this.precioTotal)){
			cobrar(true)
		}
	}
	
	def getSameDay(){
		if (fechaPagada == null){
			return false
		}
		return DateUtil.getSameDayOf(fecha, fechaPagada)
	}
}
